package study.cell_game.objects.tokens;

import org.andengine.entity.sprite.Sprite;
import org.andengine.input.touch.TouchEvent;
import org.andengine.opengl.texture.region.ITextureRegion;
import org.andengine.opengl.vbo.VertexBufferObjectManager;

import study.cell_game.enums.Direction;
import study.cell_game.enums.PlayerColor;
import study.cell_game.objects.CellMap;
import study.cell_game.objects.Player;
import study.cell_game.scenes.GameScene;
import study.cell_game.utils.TapManager;
import study.cell_game.objects.Cell;

public class TokenSprite extends Sprite {

	private Token parent;
	public Token getParentToken() {
		return parent;
	}

	public void setParentToken(Token parent) {
		this.parent = parent;
	}

	private boolean grabbed = false;
	
	public boolean isGrabbed() {
		return grabbed;
	}

	public void setGrabbed(boolean grabbed) {
		this.grabbed = grabbed;
	}

	public TokenSprite(float pX, float pY, ITextureRegion pTextureRegion,
			VertexBufferObjectManager VertexBufferObjectManager, Token token) {
		super(pX, pY, pTextureRegion, VertexBufferObjectManager);
		parent = token;
	}

	// List<Sprite>

	@Override
	public boolean onAreaTouched(TouchEvent pSceneTouchEvent, float pTouchAreaLocalX, float pTouchAreaLocalY) {
		if (TouchEvent.ACTION_DOWN == (pSceneTouchEvent.getAction())) {
			TapManager.getInstance().tapToken(this);
		}
		
//		switch (pSceneTouchEvent.getAction()) {
//		case TouchEvent.ACTION_DOWN:
//			/*if (parent.getPlaced() != true) {
//				this.grabbed = true;
//				//setScale((float)1.1);
//				if(parent.getUsable()==false)
//				{
//				for (Cell cell : Player.getInstance().getAvailableCells()) {
//					cell.getSprite().attachChild(
//							new Sprite(0, 0, TokenTextures.getInstance().getFullRing(), GameActivity.main
//									.getVertexBufferObjectManager()));
//				}
//				}
//			}*/
//			break;
//		case TouchEvent.ACTION_MOVE: 
//			if (this.grabbed) {
//				this.setX(pSceneTouchEvent.getX() - this.getWidth() / 2);
//				this.setY(pSceneTouchEvent.getY() - this.getHeight() / 2);
//			}
//			break;
//		case TouchEvent.ACTION_UP:
//			for (Cell cell : Player.getInstance().getAvailableCells()) {
//				cell.getSprite().detachChildren();
//			}
//			if (this.grabbed) {
//				this.grabbed = false;
//				CellMap Map = GameScene.getInstance().getMap();
//
//				// sprawdzanie bliskości z komórkami mapy
//				
//				for (int i = 0; i < Map.getCellNum(); i++) {
//					if (Player.getInstance().getAvailableCells().contains(Map.getCell(i))
//							&& Map.getCell(i).getX() < pSceneTouchEvent.getX()
//							&& Map.getCell(i).getY() < pSceneTouchEvent.getY()
//							&& Map.getCell(i).getX() + 70 > pSceneTouchEvent.getX()
//							&& Map.getCell(i).getY() + 60 > pSceneTouchEvent.getY()) {
//						if(parent.getUsable()==false)
//						{
//						this.setX(Map.getCell(i).getX());
//						this.setY(Map.getCell(i).getY());
//						// parent.setCell(Map.getCell(i));
//						Map.getCell(i).setToken(parent);
//						Map.getCell(i).getToken().setCell(Map.getCell(i));
//						Player.getInstance().placeToken(parent.getId());// getHand().deleteTokenFromHand(parent.getId());
//						// Player.getInstance().
//						parent.setPlaced(true);
//						GameScene.getInstance().unregisterTouchArea(parent.getPlayerColor());
//						}
//					} else {
//						this.setX(parent.getCell().getX());
//						this.setY(parent.getCell().getY());
//					}
//				}
//			}
//			break;
//		}

		return true;
	}


}
